Given an array withn
integers, your task is to check if it could become non-decreasing by modifyingat most1
element.
We define an array is non-decreasing ifarray[i] <= array[i + 1]
holds for everyi
(1 <= i < n).
Example 1:
Input:
[4,2,3]
Output:
True
Explanation:
You could modify the first
4
to
1
to get a non-decreasing array.
Example 2:
Input:
[4,2,1]
Output:
False
Explanation:
You can't get a non-decreasing array by modify at most one element.
Note:Then
belongs to [1, 10,000].
class Solution {
public:
bool checkPossibility\(vector<int>& nums\) {
if \(nums.size\(\)<=2\)
return true;
int count=0;
int one,two;
for \(int i=1;i<nums.size\(\);i++\){
//cout<< nums\[i-1\]<<" "<<nums\[i\]<<" "<<endl;
if \(nums\[i-1\]>nums\[i\]\){
count++;
if \(i<2\|\|nums\[i-2\]<=nums\[i\]\) nums\[i-1\]=nums\[i\];
else nums\[i\]=nums\[i-1\];
}
}
if \(count>=2\){
return false;
}
else{
return true;
}
}
};